package edu.zut.cs.software.practice;

import org.apache.activemq.ActiveMQConnectionFactory;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

import javax.jms.*;

/**
 * 
 * @author 陈明阳
 *
 *
 *工厂负责创建连接
 * 					    连接创建会话
 *                                    会话创建生产者、接受者
 */
public class MessageProducer {
	// 定义ActivMQ的连接地址
	private static final String ACTIVEMQ_URL = "tcp://127.0.0.1:61616";
	// 定义发送消息的队列名称
	private static final String QUEUE_NAME = "MyMessage";

	public  void MessageSend() throws JMSException {
		// 创建连接工厂-ActiveMQConnectionFactory
		// 将上面的ACTIVEMQ_URL传入进去
		ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL);

		// 创建连接-Connection
		// 利用工厂创建连接Connection
		Connection connection = activeMQConnectionFactory.createConnection();

		// 创建会话-Session
		// 利用连接创建会话
		Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

		// 创建队列目标-Destination
		// 利用session创建队列{session.createQueue}
		// 将上面的QUEUE_NAME传入进去
		Destination destination = session.createQueue(QUEUE_NAME);

		// 创建一个生产者-javax.jms.MessageProducer
		// 利用session创建生产者{session.createProducer(destination)}
		// 将上面的队列目标传入
		javax.jms.MessageProducer producer = session.createProducer(destination);
		
		
		/*//创建模拟100个消息
        for (int i = 1 ; i <= 100 ; i++){
        	//会话session创建文本信息
            TextMessage message = session.createTextMessage("我发送信息:" + i);
            
            //发送消息
            //生产者将文本发送出去
            producer.send(message);
            
            //在本地打印消息
            System.out.println("我发送的消息是：" + message.getText());
        }*/
		
		//生产者通过读取文件student_info.txt读取学生信息
		//D:\Java\workspace\ union_of_fuchou\BasePractice\src\main\resources\student_info.txt 
		String path="D:\\Java\\workspace\\union_of_fuchou\\BasePractice\\src\\main\\resources\\student_info.txt";
		File file=new File(path);
		BufferedReader reader = null;
		String tempString = null;
		
		try {
			reader = new BufferedReader(new FileReader(file));
			//读取文件不为空时，tempString记录文本内容
			while ((tempString = reader.readLine()) != null) {
				//利用会话创建文本信息，并将读取到的内容传入
				TextMessage message = session.createTextMessage(tempString);
				//创建文本信息后进行发送
				producer.send(message);
				//在控制台显示信息
				System.out.println("Message Sending:"+message.getText());
			}
			reader.close();//关闭
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}catch (IOException e) {
			e.printStackTrace();
		}finally {
			if (reader != null) {
				try {
					reader.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		
        //关闭连接
        connection.close();
	}

}
